SQL::QueryParse Method
Syntax
Arguments
- Result_Flag
TRUE (.T.) if the operation was successful; otherwise FALSE (.F.).
- SQL::Query
A SQL::Query object created with a DIM statement.
- SQLStatement
Optional. A Portable SQL statement.
Description
Parse the SQLStatement passed (or the value previously set into the SQLStatement property).
Discussion
The Parse()parses the passed SQL_Statement (or the value previously set into the SQL::Query.SQLStatement property).
Example
dim conn as SQL::Connection
dim connString as C
dim qry as SQL::Query
connString = "{A5API='Access', FileName='c:\program files\a5v7\mdbfiles\alphasports.mdb'}"
? conn.open(connString)
= .T.
? qry.parse("Select * from Customers")
= .T.This script shows the difference between the .SelectTableReferences and .TableReferences properties of the SQL::Query object.
dim q as SQL::query
? q.parse("select item from table1 t1 join table2 t2 on t1.a = t2.a join table3 t3 on t2.a = t3.a and t3.x in (select z from table4 t4 ) where x in (select y from z)")
= .T.
? q.selecttablereferences.Count
= 3
? q.selecttablereferences1
= Alias = "t1"
+Join.
Name = "table1"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.selecttablereferences2
= Alias = "t2"
+Join.
Name = "table2"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.selecttablereferences3
= Alias = "t3"
+Join.
Name = "table3"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.tablereferences.Count
= 5
? q.tablereferences1
= Alias = "t1"
+Join.
Name = "table1"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.tablereferences2
= Alias = "t2"
+Join.
Name = "table2"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.tablereferences3
= Alias = "t3"
+Join.
Name = "table3"
Owner = ""
TokenTypeName = "SelectTableReference"
?q.tablereferences4
= Alias = "t4"
+Join.
Name = "table4"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.tablereferences5
= Alias = ""
+Join.
Name = "z"
Owner = ""
TokenTypeName = "SelectTableReference"Do the same process on the nested subselect.
SubSelect = q.where.operand2 ? subselect.selecttablereferences.Count = 1 ? subselect.selecttablereferences1 = Alias = "" +Join. Name = "z" Owner = "" TokenTypeName = "SelectTableReference" ? subselect.tablereferences.Count = 1 ? subselect.tablereferences1 = Alias = "" +Join. Name = "z" Owner = "" TokenTypeName = "SelectTableReference"
A Script to Manually Build a Query
This simple example constructs a query as a builder interface would likely do it. It adds tables and columns to a declared query.
dim q as SQL::query dim c as SQL::query::Columnreference dim option as N SQLTestStatement = <<%SQL% SELECT distinct c.Name as CustomerName, IH.Due_Date, II.Part_Number, P.Description FROM Customer C, Invoice_Header IH, Invoice_Item II, Part p left outer join part_description pd on pd.name = p.name %SQL%
Reset the query and parse a string.
q.Reset() q.SQLStatement = SQLTestStatement q.Parse() q.execute(c)
See Also